package com.gxc.string;

import java.util.Scanner;

/**
 * TLV编码是按[Tag Length Value]格式进行编码的，一段码流中的信元用Tag标识，Tag在码流中唯一不重复，Length表示信元Value的长度，Value表示信元的值。
 *
 * 码流以某信元的Tag开头，Tag固定占一个字节，Length固定占两个字节，字节序为小端序。
 *
 * 现给定TLV格式编码的码流，以及需要解码的信元Tag，请输出该信元的Value。
 *
 * 输入码流的16进制字符中，不包括小写字母，且要求输出的16进制字符串中也不要包含小写字母；码流字符串的最大长度不超过50000个字节。
 */
public class TLV {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String tag = scanner.nextLine();
        String str = scanner.nextLine();
        String[] split = str.split(" ");
        int index = 0;
        while (index<split.length) {
            String L1 = split[index+1];
            String L2 = split[index+2];
            int length = java.lang.Integer.parseInt(L2 + L1, 16);
            if (split[index].equals(tag)) {
                StringBuilder sb = new StringBuilder();

                // 将当前信元的Value拼接到StringBuilder中
                for (int i = index + 3; i < index + 3 + length; i++) {
                    sb.append(split[i]).append(" ");
                }

                // 输出待解码信元的Value，转换为大写并去除首尾空格
                System.out.println(sb.toString().toUpperCase().trim());
                break;
            } else {
                // 跳过当前信元
                index += (2 + length + 1);
            }
        }
    }
}
